package com.xinsoft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xinsoft.entity.dto.SysClientDTO;
import com.xinsoft.entity.dto.SysClientPageParam;
import com.xinsoft.entity.po.SysClient;
import com.xinsoft.entity.vo.SysClientVo;
import org.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
* @author hsm
* @description 针对表【sys_client(客户)】的数据库操作Service
* @createDate 2023-05-23 13:04:01
*/
public interface SysClientService extends IService<SysClient> {

    /**
     * 方法描述: [查询客户分页列表]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysClientParam]
     * return SysClientVo>
     */
    IPage<SysClientVo> findPageListByParam(SysClientPageParam param);

    /**
     * 方法描述: [添加客户]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysClientDTO]
     * return com.socks.zhhc.core.system.user.entity.SysClient
     */
    SysClient addSysClient(SysClientDTO sysClientDTO);

    /**
     * 方法描述: [添加客户]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysClientDTO]
     * return SysClient
     */
    SysClient editSysClient(SysClientDTO sysClientDTO);

    /**
     * 方法描述: [删除客户信息]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [ids]
     * return java.lang.Boolean
     */
    void del(List<Integer> ids);

    /**
     * 方法描述: [获取客户]
     * 初始作者: hsm
     * 创建时间:  2023/04/20
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysClient]
     * return com.socks.zhhc.core.system.user.entity.SysClient
     */
    SysClientDTO getSysClient(Integer id);

    /**
     * 方法描述: [启用]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param ids
     * @return void
     */
    void enable(List<Integer> ids);

    /**
     * 方法描述: [停用]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param ids
     * @return void
     */
    void disable(List<Integer> ids);

    /**
     * 方法描述: [根据客户审核]
     * 初始作者: hsm
     * 创建时间:  2023/04/20
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [username] 客户名
     * return SysClient
     */

    void audit(List<Integer> ids );

    /**
     * 方法描述: [根据客户反审核]
     * 初始作者: hsm
     * 创建时间:  2023/04/20
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [username] 客户名
     * return SysClient
     */
    void deAudit(List<Integer> ids);

    /**
     * 方法描述: [导入]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param multipartFile
     * @return void
     */
    JSONObject importExcel(MultipartFile multipartFile) throws IOException;


    /**
     * 方法描述: [列表不分页]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param param
     * @return void
     */
    List<SysClientVo> findListByParam(SysClientPageParam param);

    void insertOrUpdateBatch(List<SysClient> sysClientList);
}
